package com.friendfeed.api;

import java.util.List;

public interface FriendFeedService {
    public static final String BAD_ID_FORMAT = "bad-id-format";
    public static final String BAD_URL_FORMAT = "bad-url-format";
    public static final String ENTRY_NOT_FOUND = "entry-not-found";
    public static final String ENTRY_REQUIRED = "entry-required";
    public static final String FORBIDDEN = "forbidden";
    public static final String IMAGE_FORMAT_NOT_SUPPORTED = "image-format-not-supported";
    public static final String INTERNAL_SERVER_ERROR = "internal-server-error";
    public static final String LIMIT_EXCEEDED = "limit-exceeded";
    public static final String ROOM_NOT_FOUND = "room-not-found";
    public static final String ROOM_REQUIrED = "room-required";
    public static final String TITLE_REQUIRED = "title-required";
    public static final String UNAUTHORIZED = "unauthorized";
    public static final String USER_NOT_FOUND = "user-not-found";
    public static final String USER_REQUIRED = "user-required";
    public static final String ERROR = "error";

    // the following are mioNews specific error codes
    public static final String JSON_PARSE_ERROR = "json-parse-error";
    public static final String DATE_PARSE_ERROR = "date-parse-error";
    public static final String IO_ERROR = "io-error";
    public static final String POST_ARGS_ERROR = "post-args-error";

    void setService(String service);

    void setStart(int start);

    void setNum(int num);

    List<Entry> fetchPublicFeed();

    List<Entry> fetchUserFeed(String nickname);

    List<Entry> fetchHomeFeed();

    List<Entry> fetchUserComments();

    User fetchProfile(String nickname);

    void addLike(String entryId);

    void deleteLike(String entryId);

    Entry publishLink(String comment, String link);

    void addComment(String entryId, String body);

    List<Entry> fetchEntryById(String... id);

    List<Entry> fetchMultiUserFeed(List<String> nicknames);

    void hide(String id);

    void unhide(String id);

    List<Entry> fetchRoomFeed(String roomNickname);
}
